package com.bjpowernode.javase.collection;

import java.util.ArrayList;
import java.util.List;

/*
ArrayList集合：
    1、默认初始化容量为10（底层先创建了一个长度为0的数组，当添加第一个元素的时候，初始化容量为10）；
    2、集合底层是Object[]数组
    3、构造方法：
        new ArrayList();
        new ArrayList(20);//指定容量
    4、ArrayList集合的扩容：
        扩容到原容量的1.5背
        建议给定一个预估计的初始化数组容量，减少扩容，因为数组扩容效率较低。

    5、数组优点：
        检索效率高（每个元素占用空间大小相同，且内存地址是连续的，如果知道首
        元素地址，知道下标，就可以计算出某个元素的地址。）
    6、数组的缺点：随机增删的效率比较低，数组无法存储大数据，因为很难找到连续的大的内存空间。
    7、注意：向数组末尾添加元素效率很高不收影响。
    8、面试官经常问的一个问题是这么多的集合中你用哪个最多。
        答：ArrayList集合。
        因为向数组末尾添加元素效率不受影响
        另外，我们检索/查找某个元素比较多。

 */
public class ArrayListTest01 {
    public static void main(String[] args) {
        //默认初始化容量为10
        List list1 = new ArrayList();
        //指定初始化容量为20
        List list2 = new ArrayList(20);

        //集合的size()方法是获取当前集合中元素的个数，不是获取集合的容量。
        System.out.println(list1.size());//0
        System.out.println(list2.size());//0

        list1.add(1);
        list1.add(2);
        list1.add(3);
        list1.add(4);
        list1.add(5);
        list1.add(6);
        list1.add(7);
        list1.add(8);
        list1.add(9);
        list1.add(10);
        System.out.println(list1.get(0));
        System.out.println(list1.size());//10
        list1.add(11);
        System.out.println(list1.size());//11

        System.out.println(10 >> 1);//5
    }
}
